<?php

class ViewFiltroConsultaPadrao extends ViewManutencaoPadrao {
    /** @var Botao */
    protected $BotaoPesquisar;
    
    private $listaCampoFiltro;
    private $listaCampoOrdem;


    public function __construct($aListaCampoFiltro, $aListaCampoOrdem) {
        ViewPadraoSistema::__construct();
        $this->listaCampoFiltro = $aListaCampoFiltro;
        $this->listaCampoOrdem  = $aListaCampoOrdem;
        $this->criaCampos();
    }

    protected function criaCampos() {
        $this->campo['campoFiltro'] = new CampoLista('campoFiltro', 'Filtrar Por', false, 20, null);
        $this->campo['campoFiltro']->setListas($this->listaCampoFiltro);
        $this->campo['operadorFiltro'] = new CampoLista('operadorFiltro', 'Operador', false, 20, null);
        $this->campo['operadorFiltro']->setListas($this->getListaOperadorFiltro());        
        $this->campo['valorFiltro'] = new CampoTexto('valorFiltro', 'Valor Filtro', false, 40, null);
        $this->campo['campoOrdem'] = new CampoLista('campoOrdem', 'Ordenar Por', false, 20, null);
        $this->campo['campoOrdem']->setListas($this->listaCampoOrdem);  
        $this->campo['operadorOrdem'] = new CampoLista('operadorOrdem', 'Operador Ordem', false, 20, null);
        $this->campo['operadorOrdem']->setListas($this->getListaOperadorOrdem());  
        
        $this->BotaoPesquisar = new Botao('Pesquisar');
        $this->BotaoPesquisar->setOnClick('executarConsulta()');
    }
    
    protected function getListaOperadorFiltro() {
        return array(new Lista('=', 'Igual'),
                     new Lista('!=', 'Diferente'),
                     new Lista('ilike', 'Contem'));
    }
    
    protected function getListaOperadorOrdem() {
        return array(new Lista('asc', 'Asc'),
                     new Lista('desc', 'Desc'));        
    }    

    public function imprimeScript() {
        ?>
        <script>
            function executarConsulta() {
                var sMsg = '';
                var oFrm = document.frm_consulta;
                
                <?
                    foreach ($this->campo as $oCampo) {
                        echo $oCampo->getJsValidacao();
                    }
                ?>
                
                if (sMsg.length > 0) {
                    alert(sMsg);
                }
                else {
                    oFrm.submit();
                }
            }
        </script>
        <?
    }
    
    public function imprimeHtml() {
        ?>
            <table>
                <tr>
                    <td>
                        <?= $this->campo['campoFiltro']->getHtmlLabel() ?>
                    </td>
                    <td>
                        <?= $this->campo['campoFiltro']->getHtml() ?>
                    </td>
                    <td>
                        <?= $this->campo['operadorFiltro']->getHtml() ?>
                    </td>
                    <td>
                        <?= $this->campo['valorFiltro']->getHtml() ?>
                    </td>                    
                </tr>
                <tr>
                    <td>
                        <?= $this->campo['campoOrdem']->getHtmlLabel() ?>
                    </td>
                    <td>
                        <?= $this->campo['campoOrdem']->getHtml() ?>
                    </td>                    
                    <td colspan="2">
                        <?= $this->campo['operadorOrdem']->getHtml() ?>
                    </td>
                </tr>                
                <tr>
                    <td>
                        &nbsp;
                    </td>
                    <td colspan="3">
                        <?= $this->BotaoPesquisar->getHtml() ?>
                    </td>
                </tr>                
            </table>
        <?
    }

    
}

?>
